/**
 * @Author @fiber-cloud
 * @Date 2025/8/13 18:48
 */
public class Main {
    public static void main(String[] args) {
        Test test = new Test();
        Test.TreeNode root = test.createTree();

        test.preOrder(root);
        System.out.println();
        test.preorderTraversal(root);
        System.out.println();
        test.preorderTraversal2(root);
        System.out.println();
        test.inOrder(root);
        System.out.println();
        test.postOrder(root);
        System.out.println();

        //获取树中节点的个数
        System.out.println(test.size(root));
        // 获取叶子节点的个数
        System.out.println(test.getLeafNodeCount(root));
        // 获取第K层节点的个数
        System.out.println(test.getKLevelNodeCount(root,3));
        // 获取二叉树的高度
        System.out.println(test.getHeight(root));
        // 检测值为value的元素是否存在
        System.out.println(test.find(root,'A'));
        System.out.println(test.find(root,'T'));


        //前序遍历(非递归)
        test.preOrder1(root);
        System.out.println();
        //中序遍历（非递归）
        test.inOrder2(root);
        System.out.println();
        //后序遍历（非递归）
        test.postOrder2(root);
        System.out.println();

        //层序遍历——用队列实现
        test.levelOrder(root);
        System.out.println();
        // 判断一棵树是不是完全二叉树
        System.out.println(test.isCompleteTree(root));

    }

}
